package aceim.app.utils.linq; import java.util.ArrayList; import java.util.Collection; import java.util.List; public final class KindaLinqQuery<T> { private final Collection<T> collection; private KindaLinqRule<T> rule; public KindaLinqQuery(Collection<T> collection) { this.collection = collection; } public KindaLinqQuery<T> where(KindaLinqRule<T> rule) { this.rule = rule; return this; } public List<T> all() { List<T> all = new ArrayList<T>(); for(T item : collection) { if (rule.match(item)) { all.add(item); } } return all; } public T first() { for(T item : collection) { if (rule.match(item)) { return item; } } return null; } }